[gcc]随机生成一个200位数字,并开13次方根

来源:百度知道 编辑:UC知道 时间:2024/05/26 14:12:35
要求

gcc

屏幕显示这200位的数字,并在数字下方显示答案。
新人,故要求每一步的解释;长期在线。

精度越高越好,不过用C难度大了些

//很简单啊
#include<stdio.h>
#include<math.h>

int main(void)
{
int i;
double num;//因为200位数太大,所以只能用double存,虽然最后不能非常精确,但是至少数量级是一样的
num=0;
for(i=0;i< 200;i++)//200次循环
{
printf("%d",i);
num = num*10 + i;//每多一位数,就把num乘以10加上i
}
printf("%lf\n",pow(num,1.0 / 13));//pow是math库中计算数的幂的函数,13次方根就是一个数的1/13次方
return 0;
}

这是用perl写的,c的版本等别的高人吧
一般的linux上都装了perl的

#!/usr/bin/perl -w

use Math::BigFloat;
srand(time);
rand();
$i = "";
$i .= int(rand(9)) + 1;
for(1 .. 199)
{
$i .= int(rand(10));
}
print "number is: ".$i."\n\n";
$x = Math::BigFloat->new($i);
print "result is: ".$x->broot(13);

先求出1/sqrt(A)的近似值并赋给X, 反复运算下式

hn=1-Axn2

xn+1=xn+xn*hn/2

直到得到想要的精度(每算一次上式, 可比前次多差不多一倍的精度)

{也可以用X←X+X[4(1-AX